YAHOO.namespace('Tesis.modelador');

YAHOO.Tesis.modelador.conexionesTable = function(elContainer, messages, listado) {
    this.messages = messages;
    this.listado = listado;
    YAHOO.Tesis.modelador.conexionesTable.superclass.constructor.call(this, elContainer,
    this.construirColumnDefs(), this.construirDataSource(), this.construirConfig());
    var self=this;
    function highConx(e){
        dibujarConexiones();
        //console.log(e);
        var rowID=self.getSelectedRows()[0];
        var data = self.getRecord(rowID).getData();
         //console.log(data);
         $("#"+data.idTemp+ " div").addClass("shadowConx");
         
    }
    this.subscribe("rowClickEvent", this.onEventSelectRow);
    this.subscribe("rowClickEvent",highConx );
};

YAHOO.lang.extend(YAHOO.Tesis.modelador.conexionesTable, YAHOO.Tesis.ListTableBase, {

    doBeforeLoadData: function(oRequest, oResponse, oPayload) {
        oPayload.totalRecords = oResponse.meta.totalRecords;
        oPayload.pagination.recordOffset = oResponse.meta.startIndex;
        $("#cantidadRegistros").html(messages.conexionesTable.totalRegistros +" "+oPayload.totalRecords);
        return oPayload;
    },
   
     accionesFormatter: function(liner, record, column, data) {
        var self = this;
        var linerElement = new YAHOO.util.Element(liner);
       
        linerElement.get('element').innerHTML =
        "<table style='margin-left:auto; margin-right:auto; width: 50px; border:0px !important;'><tr><td><div class='eliminar'></div></td></tr></table>";
                 
        linerElement.delegate('click', function() {
            self.deleteRow(self.getRecordSet().getRecordIndex(record));
            var idConexion=record.getData().idTemp;
            $("#"+idConexion).html('');
        }, '.eliminar');
        self.setAccionTooltip(linerElement,  '.eliminar', "eliminar", 5000);
        
    },

    tipoConexionFormatter:function(liner, record, column, data) {
        if (data=="1")
            liner.innerHTML = "Alterna";
        else
            liner.innerHTML = "Directa";
    },
    construirColumnDefs: function() {
        return [
          
            {
                key: 'idTemp' ,
                hidden: true
            },
            
            {
                key: 'idEstacionInicio',
                hidden: true
            },
            {
                key:'nombreInicio',
                label: 'Estación Inicio'
            },
            {
                key:'nombreFin',
                label: 'Estación Fin'
            },
            {
                key:'idEstacionFin',
                hidden: true
                //formatter:this.tipoDatoFormatter
              
            },
            {
                key:'esAlterna',
                label: 'Tipo',
                formatter: this.tipoConexionFormatter
            },
            {
                key: 'acciones',
                label: 'Acciones',
                minWidth: 70,
                maxWidth: 70,
                className: 'accionesColumn',
                formatter: this.accionesFormatter
            }
        ];
    },
    construirDataSource: function() {
        var dataSource = new YAHOO.util.XHRDataSource(Tesis.contextPath + "/pages/cargo/find?");
        dataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;


        dataSource.responseSchema = {
            resultsList: "lstCargosDTO",
            metaFields: {
                totalRecords: "totalRecords",
                startIndex: "startIndex"
            },
            fields: [ {key: 'idTemp'}, {key: 'idEstacionInicio'},{key:'idEstacionFin'},{key:'esAlterna'}]
            
        };

        return dataSource;
    },
    construirConfig: function() {

        return {
            MSG_LOADING: 'Cargando...',
            MSG_EMPTY :'No se encontraron datos.',
            MSG_ERROR: "Error cargando datos, es muy probable que la sesión haya expirado.. <a href='" + Tesis.contextPath + "/pages/public/login'>Haga clic aquí para volver a acceder al sistema.</a>",
            generateRequest: this.generarRequest,
            initialLoad: false,
            initialRequest:this.generarRequest()//,
            //dynamicData: true,
            /*paginator : new YAHOO.widget.Paginator({
                rowsPerPage: this.messages.conexionesTable.paginacion.filasxpagina,
                containers:  "cargosPaginator", //contenedor
                firstPageLinkLabel: this.messages.conexionesTable.paginacion.inicio,
                lastPageLinkLabel: this.messages.conexionesTable.paginacion.fin,
                previousPageLinkLabel: this.messages.conexionesTable.paginacion.anterior,
                nextPageLinkLabel: this.messages.conexionesTable.paginacion.siguiente,
                pageLinkClass: 'pageLinkClass',
                template: "{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
            })*/
        }
    },
    generarRequest: function(oState, oSelf) {
      oState = oState || {
            pagination: null,
            sortedBy: null
        };

        var sort = (oState.sortedBy) ? oState.sortedBy.key : "idCargo";
        var dir = (oState.sortedBy && oState.sortedBy.dir === YAHOO.widget.DataTable.CLASS_DESC) ? "desc" : "asc";
        var startIndex = (oState.pagination) ? oState.pagination.recordOffset : 0;
        var results = (oState.pagination) ? oState.pagination.rowsPerPage : 10;
        var nombre =$('#nombre').val();
        

        var forceIERequest = new Date().getTime();

        return 'sort=' + sort +
               '&dir=' + dir +
               '&startIndex=' + startIndex +
               '&results=' + (startIndex + results) +
               '&nombre=' + nombre +
               '&temp='+forceIERequest;
               
    },
    recargarData: function() {
        var self = this;
            oCallback = {
                success: self.onDataReturnInitializeTable,
                failure: self.onDataReturnSetRows,
                scope: self,
                argument: self.getState()
            };
        self.getDataSource().sendRequest(self.generarRequest(), oCallback);
        
    },
    tieneRegistros: function(){
        return this.getRecordSet().getLength()>0;
    },
    /*getListaSerializada:function(){
        var lstConexiones = {},
            record,
            getHash = function(index, id){
                return 'lstConexiones['+ index +'].' + id;
            };

        for( var i = 0; i < this.getRecordSet().getLength(); i++ ){
            record = this.getRecordSet().getRecord(i);
            lstConexiones[getHash(i, 'idTemp')] = record.getData('idTemp');
            lstConexiones[getHash(i, 'idEstacionInicio')] = record.getData('idEstacionInicio');
            lstConexiones[getHash(i, 'idEstacionFin')] = record.getData('idEstacionFin');
            lstConexiones[getHash(i, 'nombreInicio')] = record.getData('nombreInicio');
            lstConexiones[getHash(i, 'nombreFin')] = record.getData('nombreFin');
            
        }
        

        return lstConexiones;
    }, */
    getListaDTO:function(){
        var lstConexiones = [];
        var record=null;
        for( var i = 0; i < this.getRecordSet().getLength(); i++ ){
            record = this.getRecordSet().getRecord(i);
            lstConexiones.push(record.getData());
        }
        

        return lstConexiones;
    },
    agregarFila : function(fila){
        this.addRow(fila);
    },
    eliminarConexionRow: function (idConexion){
       var record=null;
       for( var i = 0; i < this.getRecordSet().getLength(); i++ ){
            record = this.getRecordSet().getRecord(i);
            if (record.getData('idTemp') == idConexion){
                this.deleteRow(i);
                break;
            }
       }
       
    },
    conexionRepetida:function(idEstacionInicio,idEstacionFin){
        for( var i = 0; i < this.getRecordSet().getLength(); i++ ){
            record = this.getRecordSet().getRecord(i);
            if (idEstacionFin){
                if ((record.getData('idEstacionInicio') == idEstacionInicio
                    && record.getData('idEstacionFin') == idEstacionFin)
                    || (record.getData('idEstacionFin') == idEstacionInicio
                    && record.getData('idEstacionInicio') == idEstacionFin)){
                    return true;
                }
            }else{
                //caso de INICIO
                return record.getData('idEstacionInicio') == idEstacionInicio
                        || record.getData('idEstacionFin') == idEstacionInicio
            }
       }
        return false;
    }
    
   
});